import scala.actors.Actor
import scala.actors.Actor._

class Customer(secretary: Actor) extends Actor {
  var random = new scala.util.Random

  def act() {
    loop {
      react {
        case `wantToMakeAppointment` =>
          println(" - Customer > Wil afspraak maken.");
          secretary ! requestAppointment; // Stuur een bericht naar secetaresse
          
        case `sentInvite` =>
          println(" - Customer > Uitnodiging ontvangen, gaat naar afspraak.");
          Thread.sleep(random.nextInt(1000)); // Simuleer wachttijd
          println(" - Customer > Is bij afspraak aangekomen.");
          sender ! arrived;  // Laat aan de verzender (TeamLeader) weten dat klant is aangekomen.

          react {
            case `notifyEndOfMeeting` =>
              println(" - Customer > Overleg is afgelopen.");
              Thread.sleep(random.nextInt(10000));
              self ! wantToMakeAppointment;
          }
          
        case `teamLeaderIsBusy` =>
          println(" - Customer > Wachten.");
          // Busy, wacht random tijd om daarna nog eens te proberen
          Thread.sleep(random.nextInt(1000)); // Simuleer wachttijd
          
      }
    }
  }
}

case object Customer extends Message